#ifndef D_OPENGL_SHADER_H
#define D_OPENGL_SHADER_H

#include <string>
#include <fstream>
#include <lib\GL\glew.h>

using namespace std;

namespace DelGE
{
	namespace Modules
	{
		namespace Graphics
		{
			enum ShaderType
			{
				ShaderType_Vertex,
				ShaderType_Fragment,
				ShaderType_Count
			};

			class OpenGLShader
			{
			private:
				ShaderType eShaderType;
				int iShaderID;

				OpenGLShader();
				OpenGLShader(ShaderType eShaderType, string sShaderSource);
				
			public:
				~OpenGLShader();

				static OpenGLShader *CreateShaderFromSource (ShaderType eShaderType, string sShaderSource);
				static OpenGLShader *CreateShaderFromFile (ShaderType eShaderType, string sFilepath);

				ShaderType GetShaderType();
				int GetShaderID();

				void Compile();

				static GLenum GLShaderType(ShaderType eShaderType);
			};
		}
	}
}

#endif